package com.csz.actions;

import com.csz.model.Score;
import java.util.Arrays;
import java.util.List;
import javax.servlet.RequestDispatcher;

/**
 *
 * @author Leonardo
 */
public class ActionGravarScore extends Action {

    @Override
    public void execute() {
        try {
            //trazendo os valores selecionados
            Integer idCategoria = (Integer) request.getSession().getAttribute("idCategoria");
            Integer idSubCategoria = (Integer) request.getSession().getAttribute("idSubCategoria");
            Integer idCaracteristica = Integer.parseInt(request.getParameter("lstCaracteristica"));
            Double vPorcentagem = Double.parseDouble(request.getParameter("txtValorPorcentagem"));

            //validando campo porcentagem (0% <= procentagem <= 100%)
            if ((vPorcentagem < 0) || (vPorcentagem > 100)) {
                throw new Exception("informe a porcentagem corretamente zé! 0% à 100%");
            }

            //Gravando Score
            Score s = new Score();
            s.setBiotipoId((Integer) request.getSession().getAttribute("idBiotipo"));
            s.setValor(vPorcentagem);
            s.setCaracteristicaId(idCaracteristica);

            //Verificando se a pontuacao da caracteristica nao pertence a uma sub caracteristica
            if (idSubCategoria != null) {
                s.setCategoriaId(idSubCategoria);
            } else {
                s.setCategoriaId(idCategoria);
            }

            s.salvar();

            //Consultar scores gravados mandando biotipo
            List<Object> params = Arrays.asList(new Object[]{s.getBiotipoId()});

            // metodo executarNamed traz o retorno da consulta em string
            List<Object[]> listaScore = Score.consultarNamedQueryGenerica(Score.ConsultarPorBioId, params);

            //Enviando a lista de scores gravados para a sessao
            request.getSession().setAttribute("listaScore", listaScore);

            //Limpando selecao subcategoria e caracteristica
            request.getSession().setAttribute("listaSubCategoria", null);
            request.getSession().setAttribute("listaCaracteristica", null);

            request.getSession().setAttribute("setaSelecioneCategoria", true);

            // Vai tartaruguinha
            RequestDispatcher rd = request.getRequestDispatcher("categorias.jsp");
            rd.forward(request, response);

        } catch (Exception e) {
            try {
                //enviando mensagem de erro para tela
                request.setAttribute("exception", e.getMessage());

                // Vai tartaruguinha
                RequestDispatcher rd = request.getRequestDispatcher("categorias.jsp");
                rd.forward(request, response);

            } catch (Exception ex) {
            }
        }
    }
}
